# -*- coding: utf-8 -*-
# UFPk - Useful Functions Pack - Development Module
# 11/05/2009 - 17/11/2009
# Romero Gomes da Silva Araujo Filho
# Marvin Dalkiri - Monkey's Translations
# Nesse módulo ficam todas as funções em fase de testes.
# Além de algumas que eu não tenho muita paciência de implementar :)
# E outras que servem para jogos específicos (possivelmente irão para o módulo __specifics__.py)
# Tenho que separar os módulos...

import UFPk
import psyco
psyco.full()

def specialReplace(tableDictionary, textFile, mode):
    """
    [$73]27 = ~
    Não tente entender, isso aqui é só pra mim mesmo :P
    """
    if mode == "d":
        replaceDictionary = importTableSpecial(tableDictionary)
        for key in replaceDictionary.keys():
            textFile = textFile.replace(key, replaceDictionary.get(key))
        return textFile
    elif mode == "i":
        replaceDictionary = importTableSpecial(tableDictionary)
        invertedReplaceDictionary = UFPk.invertTable(replaceDictionary)
        for key in invertedReplaceDictionary.keys():
            textFile = textFile.replace(key, invertedReplaceDictionary.get(key))
        return textFile
    else:
        print "Unknown mode. Please reconsider. Program will return the original text"
        return textFile
    return None

def importTableSpecial(tableName):
    """
    UFPk.importTableSpecial(tableDictionary)
    Função para importação de caracteres especiais, onde Importa uma tabela Thingy modificada, e retorna seus valores em formato de um dicionário
    """
    newTable={}
    tableFile=open(tableName, "rb")
    if UFPk.numberString(tableFile.read(3), True).upper() == "EFBBBF":
        pass
    else:
        tableFile.seek(0)
    for line in tableFile:
        line=line.strip("\r\n")
        try:
            equal=line.index("=")
            if len(line[:equal])<=4:
                pass
            else:
                newTable[line[:equal]]=line[equal+1:]
        except:
            if line == "":
                pass
            elif "=" not in line: # Dado: Essa parte foi feita para compatibilidade com as pessoas que usam "/" como fim de diálogo, e "*" como fim de texto.
                pass
            else: # Condição para eventuais bookmarks
                pass
    tableFile.close()
    return newTable
